$NG.AllReady(function (page, { useValuesChange, useUpdateRows, useBeforeClick, useUpdateRow, useDataIndexChange }) {
    const mstform = $NG.getCmpApi("p_form_dev_cost_budget");
    const dgrid1 = $NG.getCmpApi("p_form_dev_labor_budget");
    const dgrid2 = $NG.getCmpApi("p_form_dev_daliy_budget");

    useBeforeClick(async ({ args }) => {
        let lock = true
        if (page.isList) {
            const phid = page.getSelectedRecord()[0].phid
            await $NG.execServer("getSleftIsImport", { source: phid }, (res) => {
                if (res.count == 0) return
                $NG.alert("已被设备清单引用，无法反审核！")
                lock = false
            })
        }
        return lock
    }, "applycheck")
    //判断合同下是否含有服务单
    getIsSelfOne()
    function getIsSelfOne() {
        if (page.oType != 'add') return
        const cnt = mstform.getItem('u_cnt').getValue()
        if (!cnt) return
        $NG.execServer("getIsSelfOne", { cnt }, (res) => {
            console.log(res, '是否');
            const _data = JSON.parse(res.data)[0].extendObjects
            console.log(_data.num, '数量');
            if (_data.num == 0) {
                window._addLock = false
            } else {
                $NG.alert("合同下已存在二开费用单！")
                window._addLock = true
            }


        })
    }
    // 设置默认值人民币和汇率
    if (page.oType == 'add') {
        $NG.updateState((updater) => {
            updater.data.p_form_dev_cost_budget.setProps({
                phid_fcur: {
                    label: '人民币',
                    value: 1
                },
                exchangerate: 1
            })
        })
    }
    useBeforeClick(({ args }) => {
        if (window._addLock) {
            $NG.alert("合同下已存在二开费用单！")
            return false
        } else { return true }
    }, 'save')

    useBeforeClick(({ args }) => {
        if (window._addLock) {
            $NG.alert("合同下已存在二开费用单！")
            return false
        } else { return true }
    }, "check")
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    if (mstform) {
        console.log("mstform is ready");
        cntMFilter();
        getPtInfoByPhid();
        useValuesChange(({ args }) => {
            console.log(`项目监听`);
            mstform.getItem("u_cnt").setValue(null);
            getPtInfoByPhid();
            cntMFilter();
            getCntCount("p_form_dev_cost_budget", "u_cnt", () => {
                getCntInfo();
            })
        }, "p_form_dev_cost_budget.phid_pc");

        useValuesChange(({ args }) => {
            getCntInfo();
        }, "p_form_dev_cost_budget.u_cnt");
        getCntCount("p_form_dev_cost_budget", "u_cnt", getCntInfo);
        if (page.oType == "add") {
            mstform.getItem("bill_name").setValue((mstform.getItem("phid_pc").getText() || "") + "二开费用预算单");
            useValuesChange(({ args }) => {
                mstform.getItem("bill_name").setValue((mstform.getItem("phid_pc").getText() || "") + "二开费用预算单");
            }, "p_form_dev_cost_budget.phid_pc");
        }
        //表头多字段设置属性
        $NG.updateUI((updater) => {
            updater.fieldSetForm.p_form_dev_cost_budget.u_fitime.setProps({
                hidden: true, //隐藏
            });
        });
        setTimeout(() => {
            console.log(`校验隐藏的标识日期`, mstform.getItem("u_fitime").getValue());
        }, 1000);
    } else {
        console.error("mstform is not available");
    }
    if (!page.oType == 'view') {
        getCntCount("p_form_dev_cost_budget", "u_cnt", () => {
            getCntInfo();
        })
    }

    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////
    if (dgrid1) {
        useDataIndexChange(({ args, instance }) => {
            var items = args[0];
            if (items.u_position) {
                $NG.execServer("getSimpleDataByPhid", { phid: items.u_position }, function (res) {
                    if (res) {
                        const datas = JSON.parse(res.data)[0].extendObjects;
                        // 尝试将 c_descript 转换为数字
                        const personnelRate = Number(datas.c_descript);
                        if (isNaN(personnelRate)) {
                            // 如果转换失败，可以设置一个默认值或者处理错误
                            console.error("Invalid value for u_personnel_rate:", datas.c_descript);
                        }
                        items.u_personnel_rate = personnelRate;
                        caculatedgrid();
                    }
                    dgrid1.refreshView();
                });
            }
            instance.updateRow(items);
        }, "p_form_dev_labor_budget.u_position");

        useUpdateRows(({ args }) => {
            caculatedgrid();
            var sumAmtOri = 0;
            const rows = args[0];
            rows.forEach((items) => {
                if (items.u_sxfs == 1) {
                    sumAmtOri += parseFloat(items.u_labor_amt);
                }
                
            });
            //汇总赋值
            $NG.updateState((updater) => {
                updater.data.p_form_dev_cost_budget.setProps({
                    u_zk: sumAmtOri,
                });
            });
            dgrid1.refreshView();
            dgrid1.getRows().forEach((items) => {
                if (!items.u_year) {
                    items.u_year = new Date().getFullYear();
                    items.u_year_EXName = new Date().getFullYear();
                }
            });
        }, "p_form_dev_labor_budget");
    }
    ////////////////////////////////////////////////////////////--dgrid2--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid2--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid2--////////////////////////////////////////////////////////////
    if (dgrid2) {
        // 监听表格研发人工
        useUpdateRows(({ args }) => {
            console.log(`监听编辑`);
            caculatedgrid();
            dgrid2.getRows().forEach((items) => {
                if (!items.u_year) {
                    items.u_year = new Date().getFullYear();
                    items.u_year_EXName = new Date().getFullYear();
                }
            });
            dgrid2.refreshView();
        }, "p_form_dev_daliy_budget");

        // 暂时注释掉，不要删除！！！
        // 暂时注释掉，不要删除！！！
        // 暂时注释掉，不要删除！！！
        // 暂时注释掉，不要删除！！！
        // if (page.oType == "add") {
        //   $NG.execServer("getCostPc", { u_sequence: "03" }, (res) => {
        //     if (res.count == 0) return;
        //     const _data = JSON.parse(res.data);
        //     console.log(`费用项目`, _data);
        //     dgrid2.addRows(
        //       _data.reduce((value, item) => {
        //         const el = item.extendObjects;
        //         value.push({
        //           u_expense_code: el.phid,
        //           u_expense_code_EXName: el.u_name,
        //           // u_expense_description: el.u_describe,
        //         });
        //         return value;
        //       }, [])
        //     );
        //   });
        // }
    }
    ////////////////////////////////////////////////////////////--mstform function--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform function--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform function--////////////////////////////////////////////////////////////
    // 获取项目信息
    function getPtInfoByPhid() {
        if (mstform.getItem("phid_pc").getValue()) {
            $NG.execServer("getPtInfoByPhid", { phid: mstform.getItem("phid_pc").getValue() }, function (res) {
                const datas = JSON.parse(res.data)[0].extendObjects;
                console.log(`获取项目信息`, datas);
                //帮助字段赋值
                $NG.updateState((updater) => {
                    updater.data.p_form_dev_cost_budget.setProps({
                        u_pc_no: datas.pc_no, //项目编码
                        //项目类型
                        u_pc_type: {
                            label: datas.type_name,
                            value: datas.type_phid,
                        },
                        u_sqgw: {
                            //售前顾问
                            value: datas.user_sqgw_phid,
                            label: datas.user_sqgw_name,
                        },
                        //事业部
                        u_division: {
                            value: datas.division_phid,
                            label: datas.division_name,
                        },
                        u_regional_center: {
                            //区域中心
                            value: datas.regional_center_phid,
                            label: datas.regional_center_name,
                        },
                        u_dept: {
                            //部门
                            value: datas.dept_phid,
                            label: datas.dept_name,
                        },
                        u_region: {
                            //部门
                            value: datas.dept_phid,
                            label: datas.dept_name,
                        },
                        u_product_line: {
                            //产品线
                            value: datas.midwife_phid,
                            label: datas.midwife_name,
                        },
                        u_agreed_sts_dt: datas.start_date, //计划完工日期
                        u_agreed_pcl_dt: datas.end_date, //计划竣工日期
                    });
                });
            });
        }
    }
    // 获取合同信息
    function getCntInfo() {
        $NG.execServer("getCntMInfoByPhid", { phid: mstform.getItem("u_cnt").getValue() }, function (res) {
            const datas = JSON.parse(res.data)[0].extendObjects;
            console.log(`合同：`, datas);
            //帮助字段赋值
            $NG.updateState((updater) => {
                updater.data.p_form_dev_cost_budget.setProps({
                    // u_agreed_sts_dt: datas.start_dt, //计划完工日期
                    // u_agreed_pcl_dt: datas.end_dt, //计划竣工日期
                    u_cnt_no: datas.pcm_no,
                    u_invoice_type: {
                        label: datas.invoice_type_name,
                        value: datas.invoice_type_phid,
                    },
                });
            });

        });
        $NG.execServer("getCntPrivce", { phid: mstform.getItem("u_cnt").getValue() }, function (res) {
            try {
                const datas = JSON.parse(res.data)[0].extendObjects;
                console.log(datas?.cnt_sum_vat_fc, "获取合同金额");
                $NG.updateState((updater) => {
                    updater.data.p_form_dev_cost_budget.setProps({
                        u_cnt_amt_vat: datas?.cnt_sum_vat_fc, //计划完工日期
                    });
                });
            } catch (error) { }
            getIsSelfOne()
        });
    }
    //获取合同数量
    function getCntCount(table, key, fun) {
        if (!$NG.getCmpApi(table).getItem("phid_pc").getValue()) return;
        $NG.execServer("getCntCount", { type: 1, phid_pc: $NG.getCmpApi(table).getItem("phid_pc").getValue() }, (res) => {
            console.log(res, "count");
            switch (res.count) {
                case 0:
                    return;
                case 1:
                    const datas = JSON.parse(res.data)[0].extendObjects;
                    const temp_map = {};
                    temp_map[key] = datas.phid;
                    temp_map[`${key}_EXName`] = datas.bill_name;
                    $NG.updateState((updater) => {
                        updater.data[table].setProps({
                            ...temp_map,
                        });
                        setTimeout(() => {
                            if (fun) {
                                fun();
                            }
                        }, 200);
                    });
            }
        });
    }
    // 过滤合同
    function cntMFilter() {
        console.log(`开始过滤`);
        $NG.updateUI((updater, state) => {
            updater.fieldSetForm.p_form_dev_cost_budget.u_cnt.setProps({
                onBeforeOpen: async () => {
                    var phid_pc = $NG.getCmpApi("p_form_dev_cost_budget").getItem("phid_pc").getValue();
                    if (!phid_pc) {
                        $NG.alert("请先选择项目");
                        return false;
                    } else {
                        return true;
                    }
                },
                ...(!!$NG.getCmpApi("p_form_dev_cost_budget").getItem("phid_pc").getValue() && {
                    clientSqlFilter: {
                        bill_type: 1,
                        phid_pc: $NG.getCmpApi("p_form_dev_cost_budget").getItem("phid_pc").getValue(),
                    },
                }),
            });
        });
    }

    ////////////////////////////////////////////////////////////--common function--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--common function--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--common function--////////////////////////////////////////////////////////////
    function caculatedgrid() {
        console.log(`监听生效`);
        let u_total_dgrid1 = 0;
        let u_total_dgrid2 = 0;
        let u_total_dgrid = 0; //合计总费用

        dgrid1.getRows().forEach((items, rowIndex) => {
            // 人工费合计=人员费率*数量*人月
            items.u_labor_amt = (Number(items.u_personnel_rate) || 0) * (Number(items.u_qty) || 0) * (Number(items.u_per_amt_day) || 0);
            u_total_dgrid1 += parseFloat(items.u_labor_amt) || 0;
            dgrid1.refreshView();
        });
        dgrid2.getRows().forEach((items) => {
            let total = 0;
            for (let i = 1; i <= 12; i++) {
                const str = "u_expenses_" + String(i).padStart(2, "0");
                total += Number(items[str]) || 0;
            }
            items.u_dev_daliy_amt = total;
            u_total_dgrid2 += parseFloat(items.u_dev_daliy_amt);
            dgrid2.refreshView();
        });

        u_total_dgrid = u_total_dgrid1 + u_total_dgrid2;

        $NG.updateState((updater) => {
            updater.data.p_form_dev_cost_budget.setProps({
                u_total_labor_amt: u_total_dgrid1,
                u_total_daily_amt: u_total_dgrid2,
                u_total_dev_amt: u_total_dgrid,
            });
        });
    }

    if (page.oType == "add" || page.oType == "edit") {
        $NG.updateState((updater) => {
            updater.data.p_form_dev_cost_budget.setProps({
                u_fitime: "FY" + formatDate(new Date(), "yyyy-mm").replace("-", ".M"),
            });
        });
    }

    // 格式化日期
    function formatDate(dateStr, outputFormat) {
        const date = new Date(dateStr);

        if (isNaN(date)) {
            return "无效的日期字符串";
        }

        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, "0");
        const day = String(date.getDate()).padStart(2, "0");
        const hours = String(date.getHours()).padStart(2, "0");
        const minutes = String(date.getMinutes()).padStart(2, "0");

        let formattedDate;

        switch (outputFormat) {
            case "yyyy-mm-dd":
                formattedDate = `${year}-${month}-${day}`;
                break;
            case "yyyy-mm-dd HH:mm":
                formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
                break;
            case "yyyy-mm":
                formattedDate = `${year}-${month}`;
                break;
            // 可以根据需要继续添加其他格式的处理逻辑
            default:
                formattedDate = "不支持的输出格式";
        }

        return formattedDate;
    }
});


$NG.AllReady(function (page, { useValuesChange, useClick, useUpdateRow, useUpdateRows, useDataIndexChange }) {
    console.log("Data ready event triggered");
    var mstform = $NG.getCmpApi("p_form_svc_cost_budget");
    var dgrid = $NG.getCmpApi("p_form_svc_labor_budget");
    var dgrid1 = $NG.getCmpApi("p_form_svc_daliy_budget");

    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    if (mstform) {
        //初始化逻辑BEGIN
        if (mstform.getItem("phid_pc").getValue()) {
            getPtInfoByPhid();
            cntMFilter();
        }
        if (page.oType == "add") {
            if (mstform.getItem("phid_pc").getValue()) {
                mstform.getItem("bill_name").setValue(mstform.getItem("phid_pc").getText() + "服务费用预算单");
            }
            useValuesChange(({ args }) => {
                mstform.getItem("bill_name").setValue(mstform.getItem("phid_pc").getText() + "服务费用预算单");
            }, "p_form_svc_cost_budget.phid_pc");
        }
    }

    {
        getCntCount("p_form_svc_cost_budget", "u_cnt", getCntInfo);
        getPtInfoByPhid();
        //表头字段变化逻辑BEGIN
        useValuesChange(({ args }) => {
            getPtInfoByPhid();
            cntMFilter();
            $NG.updateState((updater) => {
                updater.data.p_form_svc_cost_budget.setProps({
                    //清空合同
                    u_cnt: {
                        label: null,
                        value: null,
                    },
                    u_cnt_no: null,
                });
            });
            getCntCount("p_form_svc_cost_budget", "u_cnt", getCntInfo);
        }, "p_form_svc_cost_budget.phid_pc");
    } //表头字段变化逻辑END
    if (page.oType == "add" || page.oType == "edit") {
        $NG.updateState((updater) => {
            updater.data.p_form_svc_cost_budget.setProps({
                u_fitime: "FY" + formatDate(new Date(), "yyyy-mm").replace("-", ".M"),
            });
        });
    }
    // if (page.oType == "add") {
    //   $NG.execServer("getCostPc", { u_sequence: "01" }, (res) => {
    //     if (res.count == 0) return;
    //     const _data = JSON.parse(res.data);
    //     console.log(`费用项目`, _data);
    //     dgrid1.addRows(
    //       _data.reduce((value, item) => {
    //         const el = item.extendObjects;
    //         value.push({
    //           u_expense_code: el.phid,
    //           u_expense_code_EXName: el.u_name,
    //           // u_expense_description: el.u_describe,
    //         });
    //         return value;
    //       }, [])
    //     );
    //   });
    // }

    //表头多字段设置属性
    $NG.updateUI((updater) => {
        updater.fieldSetForm.p_form_svc_cost_budget.u_fitime.setProps({
            hidden: true, //隐藏
        });
    });
    // setTimeout(() => {
    //   // console.log(`校验隐藏的标识日期`, mstform.getItem("u_fitime").getValue());
    // }, 1000);
    ////////////////////////////////////////////////////////////--dgrid--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid--////////////////////////////////////////////////////////////
    useDataIndexChange(({ args, instance }) => {
        var items = args[0];
        if (items.u_position) {
            $NG.execServer("getSimpleDataByPhid", { phid: items.u_position }, function (res) {
                if (res) {
                    const datas = JSON.parse(res.data)[0].extendObjects;
                    // 尝试将 c_descript 转换为数字
                    const personnelRate = Number(datas.c_descript);
                    if (isNaN(personnelRate)) {
                        // 如果转换失败，可以设置一个默认值或者处理错误
                        console.error("Invalid value for u_personnel_rate:", datas.c_descript);
                    }
                    items.u_personnel_rate = personnelRate;
                    caculatedgrid();
                }
                dgrid1.refreshView();
            });
        }
        instance.updateRow(items);
    }, "p_form_svc_labor_budget.u_position");
    //表体字段汇总逻辑BEGIN
    useUpdateRows(({ args }) => {
        caculatedgrid();
    }, "p_form_svc_labor_budget");

    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--dgrid1--////////////////////////////////////////////////////////////

    useUpdateRows(({ args }) => {
        const rows = args[0];

        args[0].forEach((item) => {
            let count = 0;
            for (let i = 1; i <= 12; i++) {
                let key = "u_expenses_" + String(i).padStart(2, "0");
                count += Number(item[key]) || 0;
            }
            item.u_annual_svc_amt = count;
        });

        caculatedgrid();
        //默认年度
        let bpbj_amt = args[0].reduce((value, item) => {
            if (item.u_expense_code == 8570000000000393) {
                value += (Number(item.u_amt) || 0)
            }
        }, 0)
        $NG.updateState((updater) => {
            updater.data.p_form_svc_cost_budget.setProps({
                u_srv_spare_parts: bpbj_amt
            })
        })
        args[0].forEach((item) => {
            if (!item.u_year) {
                item.u_year = new Date().getFullYear();
                item.u_year_EXName = new Date().getFullYear();
            }
        });
        dgrid1.refreshView();
    }, "p_form_svc_daliy_budget");

    //监听合同名称变化
    useValuesChange(({ args }) => {
        getCntInfo();
    }, "p_form_svc_cost_budget.u_cnt");
    ////////////////////////////////////////////////////////////////////////////////////
    function caculatedgrid() {
        console.log("caculatedgrid begin");
        let u_total_svc_labor_amt = 0;
        let u_total_daily_amt = 0;
        let u_total_svc_amt = 0;
        let BeiJian = 0; //服务备件 8570000000000393 保修材料耗用
        let FenBao = 0; //服务分包 8570000000000394 产品维修
        const Rows1 = $NG.getCmpApi("p_form_svc_labor_budget").getRows(); //服务人工页签
        const Rows2 = $NG.getCmpApi("p_form_svc_daliy_budget").getRows(); //日常费用页签
        Rows1.forEach((items, rowIndex) => {
            let total = 0;
            for (let i = 1; i <= 12; i++) {
                const key = "u_man_days_" + String(i).padStart(2, "0");
                const manDays = Number(items[key]);
                if (isNaN(manDays)) {
                    items[key] = 0;
                } else if (manDays > 30) {
                    items[key] = 30;
                    // $NG.alert(`第${rowIndex + 1}行第${i}月人天不能超过30天`);
                }
                total += Number(items[key] > 21.75 ? 21.75 : items[key]) || 0;
            }
            // 人月=人天/21.75
            // 人工费合计=人员费率*数量*人月
            items.u_man_months = total / 21.75;
            items.u_amt = (Number(items.u_personnel_rate) || 0) * (Number(items.u_qty) || 0) * (Number(items.u_man_months) || 0);
            u_total_svc_labor_amt += Number(items.u_amt) || 0;
            if (!items.u_year) {
                items.u_year = new Date().getFullYear();
                items.u_year_EXName = new Date().getFullYear();
            }
            dgrid.refreshView();
        });
        Rows2.forEach((items) => {
            u_total_daily_amt += Number(items.u_annual_svc_amt) || 0;
            if (items.u_expense_code == 8570000000000393) {
                BeiJian += Number(items.u_annual_svc_amt) || 0;
            }
            if (items.u_expense_code == 8570000000000394) {
                FenBao += Number(items.u_annual_svc_amt) || 0;
            }
            dgrid1.refreshView();
        });
        mstform.getItem("u_srv_spare_parts").setValue(BeiJian); //服务备件
        mstform.getItem("u_srv_sub").setValue(FenBao); //服务分包
        u_total_svc_amt = u_total_svc_labor_amt + u_total_daily_amt;

        $NG.updateState((updater) => {
            updater.data.p_form_svc_cost_budget.setProps({
                u_total_svc_labor_amt: u_total_svc_labor_amt, //合计服务人工费
                u_total_daily_amt: u_total_daily_amt, //合计日常费用
                u_total_svc_amt: u_total_svc_amt, //合计服务费总额
                u_svc_rate: Number(mstform.getItem("u_cnt_amt_vat").getValue()) != 0 ? u_total_svc_amt / Number(mstform.getItem("u_cnt_amt_vat").getValue()) : 0,
            });
        });
        console.log("caculatedgrid end");
    }
    function getCntInfo() {
        $NG.execServer("getCntMInfoByPhid", { phid: mstform.getItem("u_cnt").getValue() }, function (res) {
            const datas = JSON.parse(res.data)[0].extendObjects;
            console.log(`合同：`, datas);
            //帮助字段赋值
            $NG.updateState((updater) => {
                updater.data.p_form_svc_cost_budget.setProps({
                    // u_agreed_sts_dt: datas.start_dt, //计划完工日期
                    // u_agreed_pcl_dt: datas.end_dt, //计划竣工日期

                    u_cnt_no: datas.pcm_no,
                    u_cnt_amt_vat: datas.cnt_sum_fc,
                    u_warrant_period: datas.user_htbzq,
                });
            });
        });
    }

    function getPtInfoByPhid() {
        if (mstform.getItem("phid_pc").getValue()) {
            $NG.execServer("getPtInfoByPhid", { phid: mstform.getItem("phid_pc").getValue() }, function (res) {
                const datas = JSON.parse(res.data)[0].extendObjects;
                console.log(datas);
                //帮助字段赋值
                $NG.updateState((updater) => {
                    updater.data.p_form_svc_cost_budget.setProps({
                        u_agreed_sts_dt: datas.start_date, //计划完工日期
                        u_agreed_pcl_dt: datas.end_date, //计划竣工日期
                        u_pc_no: datas.pc_no, //项目编码
                        u_pc_type: {
                            label: datas.type_name,
                            value: datas.type_phid,
                        },
                        u_sqgw: {
                            //售前顾问
                            value: datas.user_sqgw_phid,
                            label: datas.user_sqgw_name,
                        },
                        u_division: {
                            //事业部
                            value: datas.division_phid,
                            label: datas.division_name,
                        },
                        u_regional_center: {
                            //区域中心
                            value: datas.regional_center_phid,
                            label: datas.regional_center_name,
                        },
                        u_product_line: {
                            //产品线
                            value: datas.midwife_phid,
                            label: datas.midwife_name,
                        },
                    });
                });
            });
        }
    }
    payProjectFilter();
    function payProjectFilter() {
        $NG.updateUI((updater) =>
            updater.editGrid.p_form_svc_daliy_budget.u_expense_code.setProps((p) => {
                console.log(`参数检查`, updater);
                return {
                    ...p,
                    editor: {
                        ...p.editor,
                        clientSqlFilter: {
                            u_sequence: "01",
                        },
                    },
                };
            })
        );
    }

    function cntMFilter() {
        if (!mstform.getItem("phid_pc").getValue()) {
            return;
        }
        $NG.updateUI((updater, state) => {
            updater.fieldSetForm.p_form_svc_cost_budget.u_cnt.setProps({
                onBeforeOpen: async () => {
                    var phid_pc = $NG.getCmpApi("p_form_svc_cost_budget").getItem("phid_pc").getValue();
                    if (!phid_pc) {
                        $NG.alert("请先选择项目");
                        return false;
                    } else {
                        return true;
                    }
                },
                ...(!!$NG.getCmpApi("p_form_svc_cost_budget").getItem("phid_pc").getValue() && {
                    clientSqlFilter: {
                        bill_type: 1,
                        phid_pc: $NG.getCmpApi("p_form_svc_cost_budget").getItem("phid_pc").getValue(),
                    },
                }),
            });
        });
    }
    // 格式化日期
    function formatDate(dateStr, outputFormat) {
        const date = new Date(dateStr);

        if (isNaN(date)) {
            return "无效的日期字符串";
        }

        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, "0");
        const day = String(date.getDate()).padStart(2, "0");
        const hours = String(date.getHours()).padStart(2, "0");
        const minutes = String(date.getMinutes()).padStart(2, "0");

        let formattedDate;

        switch (outputFormat) {
            case "yyyy-mm-dd":
                formattedDate = `${year}-${month}-${day}`;
                break;
            case "yyyy-mm-dd HH:mm":
                formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
                break;
            case "yyyy-mm":
                formattedDate = `${year}-${month}`;
                break;
            // 可以根据需要继续添加其他格式的处理逻辑
            default:
                formattedDate = "不支持的输出格式";
        }

        return formattedDate;
    }



    //////////////////////////////////////插入按钮////////////////////////////////////////////////////////
    //////////////////////////////////////插入按钮////////////////////////////////////////////////////////
    //////////////////////////////////////插入按钮////////////////////////////////////////////////////////
    //////////////////////////////////////插入按钮////////////////////////////////////////////////////////
    //////////////////////////////////////插入按钮////////////////////////////////////////////////////////


    if (page.oType == "add" || page.oType == "edit") {


        { //添加按钮
            $NG.getCmpApi('toolbar_p_form_svc_daliy_budget').insert({
                id: "fyadd",
                text: "选择费用项目",
                iconCls: "icon-New"
            });
        }
    }
    useClick(async function ({ args }) {

        // 打开帮助选择器并应用过滤条件
        $NG.external.openNGHelp({
            type: "NGMultipleHelp",
            helpId: "cost_pc",
            valueField: "d.phid.",
            labelField: "d.u_name",
            //clientSqlFilter:  // 应用过滤条件
        }).then((data) => {
            console.log(data);

            var gridArr = []; // 初始化 gridArr 数组
            for (var i = 0; i < data.length; i++) {
                // 列出需要赋值的表体字段
                var gridObj = {
                    u_expense_code: '',

                };
                // 对表体字段进行赋值, 可以取数据库中的值进行赋值
                gridObj.u_expense_code = data[i].origin.phid;
                gridObj.u_expense_code_EXName = data[i].origin.u_name;
                // 关键步骤：将 gridObj 添加到 gridArr 数组中
                gridArr.push(gridObj);
            }
            console.log(gridArr); // 确保这里打印出来的 gridArr 不是空的
            dgrid1.addRows(gridArr); // 将数据添加到表格组件中
        });
    }, "fyadd");
});

//获取合同数量
function getCntCount(table, key, fun) {
    if (!$NG.getCmpApi(table).getItem("phid_pc").getValue()) return;
    $NG.execServer("getCntCount", { type: 1, phid_pc: $NG.getCmpApi(table).getItem("phid_pc").getValue() }, (res) => {
        console.log(res, "count");
        switch (res.count) {
            case 0:
                return;
            case 1:
                const datas = JSON.parse(res.data)[0].extendObjects;
                const temp_map = {};
                temp_map[key] = datas.phid;
                temp_map[`${key}_EXName`] = datas.bill_name;
                $NG.updateState((updater) => {
                    updater.data[table].setProps({
                        ...temp_map,
                    });
                    setTimeout(() => {
                        if (fun) {
                            fun();
                        }
                    }, 200);
                });
        }
    });
}
